<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8">
	<title>功能权限管理</title>
	<link type="text/css" rel="stylesheet" href="../<s:property value="#session.themeStyle.mainCss" default="../Skin/PM/cyan/main.css"/>" />
</head>
<body>
	<div class="navBar">
		当前位置：系统管理&gt;&gt;功能权限配置
	</div>
	<s:form theme="simple">
	<div class="editBlock">
		<div id="labelTop"></div>
		<div class="tabBlock">
			<fieldset class="editBlock">
				<legend>功能权限注册管理</legend>
				<div class="dataGrid">
					<table>
						<tr>
							<th style="text-align: center;">
								编号
							</th>
							<th style="text-align: center;">
								模块
							</th>
							<th style="text-align: center;">
								功能权限
							</th>
							<th style="text-align: center;">
								范围
							</th>
							<th style="text-align: center;">
								范围
							</th>
							<th style="text-align: center;">
								范围项
							</th>
							<th style="text-align: center;">
								描述
							</th>
							<th style="text-align: center;">
								操作
							</th>
						</tr>
						<!-- 模块遍历 开始 -->
						<s:iterator value="page.data" id="module" status="moduleStatus">
							<!-- 一个模块 -->
							<tr>
								<!-- 第一列 ,行编号 模块行 -->
								<td style="text-align: left;">
									<s:property value="#moduleStatus.index+1" />
								</td>
								<!-- 第二列，模块名称，纵跨全模块 -->
								<td rowspan="<s:property value="#module.allPurviewAdnRangeCount"/>">
									<input type="text" id="edit_name_<s:property value="id" />" value="<s:property value="name" />" /><br>
									<input type="text" id="edit_key_<s:property value="id" />" value="<s:property value="purviewKey" />" />
								</td>
								<!-- 第三、四、五、六列，模块描述 -->
								<td colspan="4">
									&nbsp;
								</td>
								<td>
									<s:property value="description" />&nbsp;
								</td>
								<!-- 第七列，操作 -->
								<td class="operate">
									<a onclick="del(<s:property value="id"/>,<s:property value="level"/>, this);">删除模块</a>
									<a onclick="savePurview(this, <s:property value="id"/>);">保存模块</a>
								</td>
							</tr>
							
							<!-- 功能遍历 开始 -->
							<s:iterator value="purviews" id="funcPurview" status="funcStatus">
								<!-- 一项功能 开始 -->
								<tr>
									<!-- 第一列 ,行编号，功能行-->
									<td style="text-align: left;">
										<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />
									</td>
									<!-- 第二列，仅首行有 -->
									<!-- 第三列，仅首行有，功能权限名称，纵跨范围数加2行 -->
									<td rowspan="<s:property value="#funcPurview.allPurviewAdnRangeCount"/>">
										<input type="text" id="edit_name_<s:property value="id" />" value="<s:property value="name" />" /><br>
										<input type="text" id="edit_key_<s:property value="id" />" value="<s:property value="purviewKey" />" />
									</td>
									<td colspan="3">
										&nbsp;
									</td>
									<td>
										<s:property value="description" />&nbsp;
									</td>
									<td class="operate">
										<a onclick="del(<s:property value="id"/>,<s:property value="level"/>, this);">删除功能</a>
										<a onclick="savePurview(this, <s:property value="id"/>);">保存功能</a>
									</td>
								</tr>

								<!-- 范围遍历 开始 -->
								<s:iterator value="purviews" id="range" status="rangeStatus">
									<!-- 一种权限范围 开始 -->
									<tr>
										<!-- 第一列 ,行编号，范围行-->
										<td style="text-align: left;">
											<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-<s:property value="#rangeStatus.index+1" />
										</td>
										<!-- 第二列，模块 -->
										<!-- 第三列，功能权限 -->
										<td rowspan="<s:property value="#range.allPurviewAdnRangeCount"/>">
											<input type="text" id="edit_name_<s:property value="id" />" value="<s:property value="name" />" /><br>
											<input type="text" id="edit_key_<s:property value="id" />" value="<s:property value="purviewKey" />" />
										</td>
										<td colspan="2">
											&nbsp;
										</td>
										<td>
											<s:property value="description" />&nbsp;
										</td>
										<td class="operate">
											<a onclick="del(<s:property value="id"/>,<s:property value="level"/>, this);">删除范围</a>
											<a onclick="savePurview(this, <s:property value="id"/>);">保存范围</a>
										</td>
									</tr>
	
									<!-- 范围项遍历 开始 -->
									<s:iterator value="purviews" id="rangeItem" status="rangeItemStatus">
										<!-- 一个范围项 开始 -->
										<tr>
											<!-- 第一列 ,行编号，范围项-->
											<td style="text-align: left;">
												<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-<s:property value="#rangeStatus.index+1" />-<s:property value="#rangeItemStatus.index+1" />
											</td>
											<!-- 第二列，模块 -->
											<!-- 第三列，功能权限 -->
											<td rowspan="<s:property value="allPurviewAdnRangeCount"/>">
												<input type="text" id="edit_name_<s:property value="id" />" value="<s:property value="name" />" /><br>
												<input type="text" id="edit_key_<s:property value="id" />" value="<s:property value="purviewKey" />" />
											</td>
											<td>
												&nbsp;
											</td>
											<td>
												<s:property value="description"/>
											</td>
											<td class="operate">
												<a onclick="del(<s:property value="id"/>,<s:property value="level"/>, this);">删除范围项</a>
												<a onclick="savePurview(this, <s:property value="id"/>);">保存范围项</a>
											</td>
										</tr>

										<!-- 范围项遍历 开始 -->
										<s:iterator value="purviews" id="rangeItemX" status="rangeItemXStatus">
											<!-- 一个范围项 开始 -->
											<tr>
												<!-- 第一列 ,行编号，范围项-->
												<td style="text-align: left;">
													<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-<s:property value="#rangeStatus.index+1" />-<s:property value="#rangeItemStatus.index+1" />-<s:property value="#rangeItemXStatus.index+1" />
												</td>
												<!-- 第二列，模块 -->
												<!-- 第三列，功能权限 -->
												<td rowspan="<s:property value="allPurviewAdnRangeCount"/>">
													<input type="text" id="edit_name_<s:property value="id" />" value="<s:property value="name" />" /><br>
													<input type="text" id="edit_key_<s:property value="id" />" value="<s:property value="purviewKey" />" />
												</td>
												<td>
													<s:property value="description"/>
												</td>
												<td class="operate">
													<a onclick="del(<s:property value="id"/>,<s:property value="level"/>, this);">删除范围项</a>
													<a onclick="savePurview(this, <s:property value="id"/>);">保存范围项</a>
												</td>
											</tr>
											
											<!-- 一个范围项 结束 -->
										</s:iterator>
										<!-- 范围项遍历 结束 -->
										
								
										<!-- 添加新范围项 -->
										<tr>
											<td style="text-align: left;">
												<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-<s:property value="#rangeStatus.index+1" />-<s:property value="#rangeItemStatus.index+1" />-*
											</td>
											<td>
												新项:<input type="text" id="add_name_<s:property value="id"/>" /><br>
												标识:<input type="text" id="add_key_<s:property value="id"/>" />
											</td>
											<td>
												描述:<input type="text" id="add_desc_<s:property value="id"/>" />
											</td>
											<td class="operate">
												<a onclick="saveNewPurview(<s:property value="id"/>);">保存新范围项</a>
											</td>
										</tr>
		
										<!-- 一个范围项 结束 -->
									</s:iterator>
									<!-- 范围项遍历 结束 -->
								
								
									<!-- 添加新范围项 -->
									<tr>
										<td style="text-align: left;">
											<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-<s:property value="#rangeStatus.index+1" />-*
										</td>
										<td>
											新范围项:<input type="text" id="add_name_<s:property value="#range.id"/>" />
										</td>
										<td>
											标识:<input type="text" id="add_key_<s:property value="#range.id"/>" />
										</td>
										<td>
											描述:<input type="text" id="add_desc_<s:property value="#range.id"/>" />
										</td>
										<td class="operate">
											<a onclick="saveNewPurview(<s:property value="#range.id"/>);">保存新范围项</a>
										</td>
									</tr>
									
									<!-- 一种权限范围 结束 -->
								</s:iterator>
								<!-- 范围遍历 结束 -->
							
								<!-- 添加新权限范围 -->
								<tr>
									<td style="text-align: left;">
										<s:property value="#moduleStatus.index+1" />-<s:property value="#funcStatus.index+1" />-*
									</td>
									<td>
										新范围:<input type="text" id="add_name_<s:property value="#funcPurview.id"/>" />
									</td>
									<td colspan="2">
										标识:<input type="text" id="add_key_<s:property value="#funcPurview.id"/>" />
									</td>
									<td>
										描述:<input type="text" id="add_desc_<s:property value="#funcPurview.id"/>" />
									</td>
									<td class="operate">
										<a onclick="saveNewPurview(<s:property value="#funcPurview.id"/>);">保存新范围</a>
									</td>
								</tr>
								
								<!-- 一项权限 结束 -->
							</s:iterator>
							<!-- 功能权限遍历 结束 -->
		
							<!-- 添加功能权限 -->
							<tr>
								<td style="text-align: left;">
									<s:property value="#moduleStatus.index+1" />-*
								</td>
								<td>
									新功能:<input type="text" id="add_name_<s:property value="#module.id"/>" />
								</td>
								<td colspan="3">
									标识:<input type="text" id="add_key_<s:property value="#module.id"/>" />
								</td>
								<td>
									描述:<input type="text" id="add_desc_<s:property value="#module.id"/>" />
								</td>
								<td class="operate">
									<a onclick="saveNewPurview(<s:property value="#module.id"/>);">保存新功能</a>
								</td>
							</tr>
							
						<!-- 一个模块 结束 -->
						</s:iterator>
						<!-- 模块遍历 结束 -->
						
						<!-- 添加新模块 -->
						<tr>
							<td style="text-align: left;">
								*
							</td>
							<td>
								新模块:<input type="text" id="add_name_" />
							</td>
							<td colspan="4">
									标识:<input type="text" id="add_key_" />
							</td>
							<td>
									描述:<input type="text" id="add_desc_" />
							</td>
							<td class="operate">
								<a onclick="saveNewPurview();">保存新增模块</a>
							</td>
						</tr>
					</table>
				</div>
			</fieldset>
			<div class="toolbar">
				<a onclick="$('form')[0].submit();" style="text-decoration: none;">刷新</a>
				<a onclick="history.go(-1);" style="text-decoration: none;">返回</a>
			</div>
		</div>
					
	</div>
	</s:form>
	<script type="text/javascript" src="../js/jquery.js"></script>
	<script type="text/javascript" src="../js/store.js"></script>
	<script type="text/javascript">
		// 模块选择改变
		function moduleChange(obj) {
			if (!obj.checked) {
				$(obj).parent().parent().parent().next().find("table :checkbox").attr(
						"checked", false);
			} else {
				$(obj).parent().parent().parent().next().find("table :checkbox").attr(
						"checked", true);
			}
		}
		
		// 更新模块选择状态
		function updateParent(obj, moduleId) {
			if (obj.checked) {
				$("#" + moduleId).attr("checked", true);
			} else {
				var rdoValue = $("#radio_" + obj.id);
				if (rdoValue) {
					$("#" + rdoValue.val()).attr("checked", false);
					rdoValue.attr("disabled", true);
				}
			}
		}
		
		function rdoChange(obj, rdoId) {
			if (obj.checked) {
				var rdoValue = $("#radio_" + rdoId);
				rdoValue.attr("disabled", false);
				rdoValue.val(obj.value);
				$("#" + rdoId).attr("checked", true);
			}
		}
		
		function del(purviewId, level, obj) {
			var objName;
			switch (level) {
			case 1:
				objName = "功能模块";
				break;
			case 2:
				objName = "功能权限";
				break;
			default:
				objName = "权限范围";
				break;
			}
			if (confirm("真的要删除该"+objName+"吗?")){
				var url = "purview-del.action";
				$.ajax({
					url: url,
					type: "POST",
					data: {"item.id":purviewId},
					dataType: "json",
					success: function(result){
						if(result.success){
							alert(objName+"已成功删除！");
							$("form")[0].submit();
						}else{
							alert(objName+"删除失败："+result.errorMessage);
						}
					}
				});
			}
		}
		
		function savePurview(obj, id){
			var name = $("#edit_name_" + id).val();
			var key = $("#edit_key_" + id).val();
			var data = {"item.id": id,"item.name": name, "item.purviewKey": key};
			var url = "purview-save.action";
			$.ajax({
				url: url,
				type: "POST",
				data: data,
				dataType: "json",
				success: function(result){
					if(result.success){
						alert("保存成功！");
						$("form")[0].submit();
					}else{
						alert("发生错误："+result.errorMessage);
					}
				}
			});
		}
		
		function saveNewPurview(parentId){
			if(typeof(parentId)=="undefined")parentId="";
			var name = $("#add_name_"+parentId).val();
			var description = $("#add_desc_"+parentId).val();
			var key = $("#add_key_"+parentId).val();
			var data;
			if (parentId!=""){
				data = {"item.name": name, "item.description": description, "item.purviewKey": key, "item.parent.id":parentId};
			}else{
				data = {"item.name": name, "item.description": description, "item.purviewKey": key};
			}
			var url = "purview-save.action";
			$.ajax({
				url: url,
				type: "POST",
				data: data,
				dataType: "json",
				success: function(result){
					if(result.success){
						alert("保存成功！");
						$("form")[0].submit();
					}else{
						alert("发生错误："+result.errorMessage);
					}
				}
			});
		}
		
		function add(parentId){
			var form = $("form")[0];
			form.action = "savePurview";
			if (parentId){
				loadFrom("item.parent.id",parentId,form);
			}
			
			var name = $("#add_name_"+parentId).val();
			var description = $("#add_desc_"+parentId).val();
			var key = $("#add_key_"+parentId).val();
			loadFrom("item.name",name,form);
			loadFrom("item.description",description,form);
			loadFrom("item.purviewKey",key,form);
			form.submit();
		}
		
		function changeOrder(purviewId, offset){
			var form = $("form")[0];
			form.action = "purviewChangeOrder";
			loadFrom("item.id",purviewId,form);
			loadFrom("offset",offset,form);
		}
	</script>
</body>
</html>
